#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n,m,k,p;

bool check(vector<int>& nums,vector<int>& left,ll mid){
    ll sum=0,cnt=0;
    for(int i=0;i<nums.size();i++){
        cnt+=min(nums[i]/k,mid);
    }

    if(cnt>=mid*p){
        if(mid*p*k>=m)return true;
        return false;
    }

    sum=cnt*k;
    vector<ll> add;
    for(int i=0;i<n;i++){
        if(nums[i]/k<mid)add.push_back(nums[i]%k);
    }
    sort(add.begin(),add.end(),greater<ll>());
    ll need=mid*p-cnt;
    for(int i=0;i<min((ll)need,(ll)add.size());i++){
        sum+=add[i];
    }
    if(sum>=m)return true;
    return false;
}

void solve() {
    cin>>n>>m>>k>>p;
    vector<int> nums(n);
    vector<int> left(n);
    for(int i=0;i<n;i++){
        cin>>nums[i];
        left[i]=nums[i]%k;
    }
    sort(left.begin(),left.end(),greater<ll>());
    for(int i=1;i<n;i++){
        left[i]+=left[i-1];
    }
    ll l=0,r=1e9;
    while(l<r){
        ll mid=(l+r)/2;
        if(check(nums,left,mid)){
            r=mid;
        }else{
            l=mid+1;
        }
    }
    cout<<l<<'\n';
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int _=1;
    cin>>_;
    while(_--){
        solve();
    }
}